<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

class Ambiente extends CI_Model {
	
	/**
	 * @name
	 * @param
	 * @param
	 * @return
	 * @see
	 * @since
	 * @author
	 */
	public function criar($aAmbiente){
		
		$this->db->trans_start();
		
		$sSql = "
			INSERT INTO
				tb_ambiente
			(
				nome_ambiente,
				qtde_mesa_ambiente
			)
			VALUES (
				'{$aAmbiente['nome_ambiente']}',
				{$aAmbiente['qtde_mesa_ambiente']}
			)";
		
		$this->db->query($sSql);
		
		$iId = $this->db->query('SELECT MAX(id_ambiente) id FROM tb_ambiente');
		$iId = $iId->row();
		$aAmbiente['id_ambiente'] = $iId->id;
		
		for ($i = 1; $i <= $aAmbiente['qtde_mesa_ambiente']; $i++) {
			if ($i < 10) {
				$i = 0 . $i;
			}
			$aAmbiente['login_usuario'] = $aAmbiente['cod_mesa'] = $aAmbiente['id_ambiente'] . $i;
			$aAmbiente['qrcode_link_mesa'] = base_url() . '?' . md5('mesa') . '=' . $aAmbiente['cod_mesa'] . '&' . md5('senha') . '=aberta';
			$aAmbiente['qrcode_imagem_mesa'] =  str_replace(' ', '_', strtolower($aAmbiente['nome_ambiente']));
			
			$this->Mesa->criar($aAmbiente);
			$this->usuario->criar($aAmbiente);
			
			$this->db->trans_complete();
				
			if ($this->db->trans_status() === TRUE) {
				if (!file_exists(FILES . $aAmbiente['qrcode_imagem_mesa'])) {
					@mkdir(FILES . $aAmbiente['qrcode_imagem_mesa']);
				}
					
				$this->load->library('ciqrcode');
				$sQrcode['data'] = $aAmbiente['qrcode_link_mesa'];
				$sQrcode['level'] = 'H';
				$sQrcode['size'] = 10;
				$sQrcode['savename'] = FILES . $aAmbiente['qrcode_imagem_mesa'] . '/' . $aAmbiente['cod_mesa'] . '.png';
				$this->ciqrcode->generate($sQrcode);
			}
		}
		
		return true;
	}
	
	/**
	 * @name
	 * @param
	 * @param
	 * @return
	 * @see
	 * @since
	 * @author
	 */
	public function ler(){
		$sSql = "
			SELECT
				id_ambiente,
				nome_ambiente,
				qtde_mesa_ambiente
			FROM
				tb_ambiente
			WHERE
				nome_ambiente != 'default'
		";
		
		$oResultado = $this->db->query($sSql);
		return $oResultado->result_array();
	}
	
	/**
	 * @name
	 * @param
	 * @param
	 * @return
	 * @see
	 * @since
	 * @author
	 */
	public function atualizar($aAmbiente){
		
		$aOldPasta = $this->lerById($aAmbiente['id_ambiente']);
		$sPasta = $aOldPasta[0]['nome_ambiente'];
		$sOldPasta = FILES . str_replace(' ', '_', strtolower($sPasta));
		$sNewPasta = FILES . str_replace(' ', '_', strtolower($aAmbiente['nome_ambiente']));
		
		if (rename ($sOldPasta, $sNewPasta)) {
		
			$sSql = "
				UPDATE
					tb_ambiente
				SET
					nome_ambiente = '{$aAmbiente['nome_ambiente']}'
				WHERE
					id_ambiente = '{$aAmbiente['id_ambiente']}'
			";
			
			return $this->db->query($sSql);
		
		} else {
			return false;
		}
	}
	
	/**
	 * @name
	 * @param
	 * @param
	 * @return
	 * @see
	 * @since
	 * @author
	 */
	public function deletar($iIdAmbiente, $sNomeAmbiente){
		
		if ($this->removePasta(FILES . str_replace(' ', '_', strtolower($sNomeAmbiente)))) {

			$this->db->trans_start();
			
			$sSql = "
				DELETE FROM
					tb_usuario
				WHERE
					tb_ambiente_id_ambiente = {$iIdAmbiente}
			";
			
			$this->db->query($sSql);
			
			$sSql = "
				DELETE FROM
					tb_mesa
				WHERE
					tb_ambiente_id_ambiente = {$iIdAmbiente}
			";
			
			$this->db->query($sSql);
			
			$sSql = "
				DELETE FROM
					tb_ambiente
				WHERE
					id_ambiente = {$iIdAmbiente}
			";
			
			$this->db->query($sSql);
			
			$this->db->trans_complete();
			
			if ($this->db->trans_status() === TRUE) {
				return true;
			} else {
				return false;
			}
		
		} else {
			return false;
		}
	
	}
	
	/**
	 * @name
	 * @param
	 * @param
	 * @return
	 * @see
	 * @since
	 * @author
	 */
	public function lerById($iId) {
		$sSql = "
			SELECT
				id_ambiente,
				nome_ambiente
			FROM
				tb_ambiente
			WHERE
				id_ambiente = {$iId}
		";
		$oResultado = $this->db->query($sSql);
		if ($oResultado->row()) {
			return $oResultado->result_array();
		} else {
			return false;
		}
	}
	
	public function removePasta($sPasta) {
		foreach(glob($sPasta . '/*') as $file) {
	        if(is_dir($file))
	            @rrmdir($file);
	        else
	            @unlink($file);
	    }
	    if (@rmdir($sPasta))
	    	return true;
	    else
	    	return false;
	}
}

/* End of file Ambiente.php */